Virtualization of computer hardware may be used to increase the functionally of a given computer system. Different virtual machines may make use of the same hardware platform while operating as separate machines running their own operating system of either the same type, such as two instances of Windows, or different types, such as Windows and Linux.
To implement one or more virtual machines, a hypervisor may be implemented to facilitate communication between the hardware and the virtual machines. A hypervisor generally provides abstraction for controls necessary to operate a given hardware platform, which may include aspects like interrupts, central processing unit (CPU) scheduling, register allocation, BIOS control, and graphical display control. The hypervisor then facilitates communication between an operating system instance running in a virtual machine and the hardware platform. One type of hypervisor is referred to as a bare metal hypervisor. In a bare metal hypervisor, the hypervisor itself may directly control the hardware platform. The bare metal hypervisor may be implemented using a basic embedded operating system run the by the hypervisor itself. Another type of hypervisor facilitates communication between one or more operating system instances running on virtual machines and a host operating system. The hypervisor may facilitate communication between the virtual machines and the host operating system, which in turn controls the hardware platform.
Hardware virtualization may allow for a variety of advantages—including the need to purchase only a single hardware platform while running multiple seemingly separate machines. Each virtual machine may operate a different operating system, allowing one hardware platform to execute potentially incompatible applications, as one runs in the operating system of one virtual machine, and a second in the different operating system of another virtual machine.
While virtualization may have the potential to bring about advantages, in practice in may be difficult to manage the control of hardware components by multiple different virtual machines.